{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Introduction to Eager and Graph mode NPU inference\n",
    "\n",
    "In this Jupyter Notebook, we explore the concepts of Eager and Graph mode NPU inference. \n",
    "\n",
    "Eager mode allows us to execute operations immediately as they are called, providing a more interactive and dynamic programming experience. On the other hand, Graph mode allows us to optimize and compile the operations into a computational graph, which can lead to improved performance and efficiency.\n",
    "\n",
    "Throughout this notebook, we will demonstrate the usage of Eager and Graph mode for NPU inference using various examples and code snippets. We will also explore the visualization of computation graphs and compare the execution times of CPU and NPU implementations.\n",
    "\n",
    "Let's dive in!\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the next cell, we define some visualization utilities to visualize NPU models and kernels. These utilities are used to generate a graphical representation of the computation graph of the NPU models and kernels.\n",
    "\n",
    "To visualize the computation graph, we use the `netron` package in Python. `netron` is a viewer for neural network models, and it provides an interactive visualization of the computation graph.\n",
    "\n",
    "To use the `netron` package, it needs to be installed in the Python environment. You can install it by running the following command in a code cell:\n",
    "\n",
    "```bash\n",
    "pip install netron\n",
    "```\n",
    "\n",
    "After installing the `netron` package, you can use it to visualize the computation graph of NPU models and kernels by calling the `visualize_factory()` or `visualize_computation_graph()` functions defined in the previous cell. These functions save the computation graph as an XML file and open it in the `netron` viewer, which can be accessed through a web browser.\n",
    "\n",
    "The visualization utilities provide a convenient way to understand the structure and connections of NPU models and kernels, making it easier to analyze and debug the neural network inference process."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Local_Admin\\Desktop\\LLM\\intel-npu-acceleration-library\\venv\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
      "  from .autonotebook import tqdm as notebook_tqdm\n"
     ]
    }
   ],
   "source": [
    "#\n",
    "# Copyright © 2024 Intel Corporation\n",
    "# SPDX-License-Identifier: Apache 2.0\n",
    "#\n",
    "\n",
    "\n",
    "from intel_npu_acceleration_library.nn.module import NPUContextManager\n",
    "import intel_npu_acceleration_library as npu_lib\n",
    "import IPython\n",
    "import netron\n",
    "import torch\n",
    "\n",
    "\n",
    "def visualize_factory(factory, name=\"model.xml\", port=8081):\n",
    "    factory.save(name)\n",
    "    netron.start(name, port, browse=False)\n",
    "    display(IPython.display.IFrame(f\"http://localhost:{port}\", width=640, height=480))\n",
    "    \n",
    "def visualize_computation_graph(tensor, name=\"model.xml\", port=8081):\n",
    "    visualize_factory(tensor.factory, name, port)\n",
    "\n",
    "\n",
    "def visualize_model(model, name=\"model.xml\", port=8081):\n",
    "    factory = list(model._nn_factory_cache.values())[0]\n",
    "    visualize_factory(factory, name, port)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Run a simple convolution on CPU\n",
    "\n",
    "Create a simple CPU convolution using torch. We'll then compare it with NPU inference\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "x = torch.rand((1, 128, 64, 64), dtype=torch.float16)\n",
    "weights = torch.rand((256, 128, 1, 1), dtype=torch.float16)\n",
    "bias = torch.rand((256,), dtype=torch.float16)\n",
    "\n",
    "conv_out_cpu = torch.nn.functional.conv2d(x, weights, bias=bias)\n"
   ]
  },
  {
   "attachments": {
    "7544d518-1011-45b5-95e3-793c953f35ac.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "Eager mode execution in the context of the NPU allows operations to be executed immediately as they are called. This provides a more interactive and dynamic programming experience, where each operation is executed and the results are immediately available. Eager mode is useful for debugging and prototyping, as it allows for easy inspection of intermediate results and quick iteration.\n",
    "\n",
    "In eager mode, the NPU Acceleration Library generates JIT (Just-in-Time) kernels that do not include weights. Instead, the weights are passed as inputs to the kernel. This design allows for the reutilization of the kernel across multiple inferences, enabling the execution of topologically similar blocks with different parameters.\n",
    "\n",
    "On the other hand, graph mode execution in the context of the NPU involves optimizing and compiling the operations into a computational graph. This graph represents the sequence of operations to be executed and their dependencies. Graph mode can lead to improved performance and efficiency, as the graph can be optimized and executed more efficiently than individual operations. Graph mode is particularly useful for large-scale computations and production deployments, where performance is a critical factor.\n",
    "\n",
    "In summary, eager mode provides a more interactive and dynamic programming experience, while graph mode offers improved performance and efficiency. The choice between eager and graph mode depends on the specific requirements of the application and the trade-offs between interactivity and performance.\n",
    "\n",
    "\n",
    "![image.png](attachment:7544d518-1011-45b5-95e3-793c953f35ac.png)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Same operation on NPU in graph mode\n",
    "\n",
    "The next cell performs the same operation on the NPU in graph mode.\n",
    "\n",
    "This code creates a context manager `graph_model` using `NPUContextManager()`. Inside the context manager, it creates a tensor `x_t` with the same shape and data type as `x`. Then, it performs a convolution operation using `torch.nn.functional.conv2d()` with the tensor `x_t`, `weights`, and `bias`. The result is stored in the variable `out`. Finally, it executes the graph model on the NPU using `graph_model(x)` and stores the result in `conv_out_npu_graph`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "with NPUContextManager() as graph_model:\n",
    "    x_t = graph_model.Tensor(x.shape, x.dtype)\n",
    "\n",
    "    out = torch.nn.functional.conv2d(x_t, weights, bias=bias)\n",
    "\n",
    "conv_out_npu_graph = graph_model(x)\n",
    "\n",
    "visualize_computation_graph(out)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Same operation on NPU in eager mode\n",
    "\n",
    "The next cell performs the same operation on the NPU in eager mode.\n",
    "\n",
    "This code creates a context manager `eager_model` using `NPUContextManager()`. Inside the context manager, it creates tensors `x_t`, `weights_t`, and `bias_t` with the same shape and data types as `x`, `weights`, and `bias` respectively. Then, it performs a convolution operation using `torch.nn.functional.conv2d()` with the tensors `x_t`, `weights_t`, and `bias_t`. The result is stored in the variable `out`. Finally, it executes the eager model on the NPU using `eager_model(x, weights, bias)` and stores the result in `conv_out_npu_eager`. \n",
    "\n",
    "The main difference at execution level is that `eager_model` takes `weights` and `bias` as inputs while `graph_model` only takes `x`. This is because in graph mode the weights are already embedded into the NPU network offloaded to the NPU"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "with NPUContextManager() as eager_model:\n",
    "    x_t = eager_model.Tensor(x.shape, dtype=x.dtype)\n",
    "    weights_t = eager_model.Tensor(weights.shape, dtype=weights.dtype)\n",
    "    bias_t = eager_model.Tensor(bias.shape, dtype=bias.dtype)\n",
    "\n",
    "    out = torch.nn.functional.conv2d(x_t, weights_t, bias=bias_t)\n",
    "\n",
    "conv_out_npu_graph = eager_model(x, weights, bias)\n",
    "\n",
    "visualize_computation_graph(out)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Compare execution of CPU, NPU graph and NPU eager mode\n",
    "\n",
    "To compare the execution of CPU, NPU graph mode, and NPU eager mode, we can use the `timeit` magic command in Jupyter Notebook. Here's the code:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU\n",
      "158 ms ± 7.21 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n",
      "NPU eager mode\n",
      "1.29 ms ± 30.1 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
      "NPU graph mode\n",
      "775 µs ± 11 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "print(\"CPU\")\n",
    "\n",
    "%timeit torch.nn.functional.conv2d(x, weights, bias=bias)\n",
    "\n",
    "print(\"NPU eager mode\")\n",
    "\n",
    "%timeit eager_model(x, weights, bias)\n",
    "\n",
    "print(\"NPU graph mode\")\n",
    "\n",
    "%timeit graph_model(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As expected NPU is faster than CPU for such operation, with graph mode being the fastest mode of execution as the weights and bias are already part of the model."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Use Modules\n",
    "\n",
    "To use the NPU in a torch-friendly way, you can simply use the `to` syntax provided by PyTorch. This allows you to easily transfer your torch modules and tensors to the NPU device for accelerated computation.\n",
    "By using the `to` syntax, you can seamlessly integrate the NPU into your torch workflow and take advantage of its accelerated computation capabilities.\n",
    "\n",
    "Here's an example of how to define and use a torch module that utilizes the NPU:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NNModule(\n",
       "  (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "  (relu1): ReLU()\n",
       "  (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "  (relu2): ReLU()\n",
       "  (conv3): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "  (relu3): ReLU()\n",
       "  (conv4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "  (relu4): ReLU()\n",
       "  (pool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (fc): Linear(in_features=65536, out_features=10, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "class NNModule(torch.nn.Module):\n",
    "    def __init__(self):\n",
    "        super(NNModule, self).__init__()\n",
    "        self.conv1 = torch.nn.Conv2d(256, 256, 3, 1, 1)\n",
    "        self.relu1 = torch.nn.ReLU()\n",
    "        self.conv2 = torch.nn.Conv2d(256, 256, 3, 1, 1)\n",
    "        self.relu2 = torch.nn.ReLU()\n",
    "        self.conv3 = torch.nn.Conv2d(256, 256, 3, 1, 1)\n",
    "        self.relu3 = torch.nn.ReLU()\n",
    "        self.conv4 = torch.nn.Conv2d(256, 256, 3, 1, 1)\n",
    "        self.relu4 = torch.nn.ReLU()\n",
    "        self.pool = torch.nn.MaxPool2d(2, 2)\n",
    "        self.fc = torch.nn.Linear(256*16*16, 10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x =  self.relu1(self.conv1(x))\n",
    "        x =  self.relu2(self.conv2(x))\n",
    "        x =  self.relu3(self.conv3(x))\n",
    "        x =  self.relu4(self.conv4(x))\n",
    "        x = self.pool(x)\n",
    "        x = x.view(-1, 256*16*16)\n",
    "        x = self.fc(x)\n",
    "        return x\n",
    "\n",
    "\n",
    "model = NNModule()\n",
    "\n",
    "model\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9.61 ms ± 158 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
     ]
    }
   ],
   "source": [
    "x = torch.randn(1, 256, 32, 32)\n",
    "\n",
    "%timeit model(x) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Run a module in the NPU\n",
    "\n",
    "\n",
    "To offload the model to the NPU, you can simply use the `to` syntax provided by PyTorch. By calling `model.to(\"npu\")`, the model and its parameters will be transferred to the NPU device for accelerated computation. Here's the code:\n",
    "\n",
    "```python\n",
    "model.to(\"npu\")\n",
    "```\n",
    "\n",
    "After executing this code, the model will be offloaded to the NPU and all subsequent operations performed on the model will be executed on the NPU."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NPUModuleWrapper(\n",
       "  (module): NNModule(\n",
       "    (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (relu1): ReLU()\n",
       "    (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (relu2): ReLU()\n",
       "    (conv3): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (relu3): ReLU()\n",
       "    (conv4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (relu4): ReLU()\n",
       "    (pool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "    (fc): Linear(in_features=65536, out_features=10, bias=True)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = model.to(\"npu\")\n",
    "\n",
    "model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.56 ms ± 17.8 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "# In the first inference the model is compiled\n",
    "_ = model(x)\n",
    "\n",
    "%timeit model(x) "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Implement custom kernels\n",
    "\n",
    "In this section we are goinig to create custom NPU kernels. The example we are going to follow is about [Phi3MLP](https://github.com/huggingface/transformers/blob/main/src/transformers/models/phi3/modeling_phi3.py#L243) kernel. \n",
    "\n",
    "As a first step, we should define the equivalent, weight-less NPU kernel. Note that the forward method has the weights as input parameter. That reflect the fact that it is a NPU kernel."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from intel_npu_acceleration_library.nn.module import Module\n",
    "from transformers.models.phi3.modeling_phi3 import Phi3MLP\n",
    "import uuid\n",
    "\n",
    "class Phi3NPUKernel(npu_lib.nn.Module):\n",
    "    def __init__(self, config, activation_fn):\n",
    "        super().__init__()\n",
    "        self.config = config\n",
    "        self.activation_fn = activation_fn\n",
    "\n",
    "    def forward(self, hidden_states, gate_up_proj_w, down_proj_w, **kwargs):\n",
    "        gate_up_states = torch.nn.functional.linear(hidden_states, gate_up_proj_w)\n",
    "\n",
    "        gate = gate_up_states[..., :self.config.intermediate_size]\n",
    "        up_states = gate_up_states[..., self.config.intermediate_size:]\n",
    "\n",
    "        up_states = up_states * self.activation_fn(gate)\n",
    "\n",
    "        return torch.nn.functional.linear(up_states, down_proj_w)\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We then create a wrapper around the `Phi3MLP` layer. This module inherit from Phi3MLP and also has the previously defined `Phi3NPUKernel` as a module.\n",
    "\n",
    "We then override the `forward` method to use the `npu_kernel` we defined earlier with the layer weights."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "class NPUPhi3MLP(Phi3MLP):\n",
    "    def __init__(self, config):\n",
    "        super().__init__(config)\n",
    "        self.npu_kernel = Phi3NPUKernel(config, self.activation_fn).to(\"npu\")\n",
    "        # Useful to mark kernel and optimize weight loading\n",
    "        self.op_id = str(uuid.uuid4())\n",
    "    \n",
    "    def forward(self, hidden_states):\n",
    "        return self.npu_kernel(hidden_states, self.gate_up_proj.weight, self.down_proj.weight, op_id=self.op_id)\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Implementation of PHI3 MLP in eager and graph mode\n",
    "\n",
    "The same can be done in graph mode by simply using the `to` syntax. Profiling the three shows the performance boost we get by running such model on NPU"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "NPU eager mode\n",
      "37.1 ms ± 89.8 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n",
      "NPU graph mode\n",
      "36.4 ms ± 68.7 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
     ]
    }
   ],
   "source": [
    "from transformers import AutoConfig\n",
    "\n",
    "conf = AutoConfig.from_pretrained(\"microsoft/Phi-3-mini-4k-instruct\")\n",
    "\n",
    "npu_phi3_mlp = NPUPhi3MLP(conf).half()\n",
    "\n",
    "hidden_states = torch.rand((128, conf.hidden_size)).half()\n",
    "_ = npu_phi3_mlp(hidden_states)\n",
    "\n",
    "print(\"NPU eager mode\")\n",
    "%timeit npu_phi3_mlp(hidden_states)\n",
    "\n",
    "phi3_graph = npu_phi3_mlp.to(\"npu\")\n",
    "_ = phi3_graph(hidden_states)\n",
    "\n",
    "print(\"NPU graph mode\")\n",
    "%timeit phi3_graph(hidden_states)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualize the Phi3 MLP NPU kernel and graph\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"NPU kernel\")\n",
    "visualize_model(npu_phi3_mlp.npu_kernel)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"NPU graph\")\n",
    "visualize_model(phi3_graph)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Export a generated model to OpenVINO\\\n",
    "\n",
    "Under the hood Intel NPU acceleration library uses OpenVINO to describe the models. Because of that, it is easy to export generated kernels to OV to productize them later. This allows to use this library to fast prototype networks on the Intel NPU."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "model._nn_factory_cache['1_256_32_32_torch.float32'].save(\"ov_model.xml\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
